package RapportageBehandelingen.View;

import BeheerBehandelingen.Control.AfspraakControl;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;

import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class RapportagePopup extends JFrame {
	private AfspraakControl eventHandler;
	private RapportageOverzicht overzicht;
	private JPanel northPanel, centerPanel, southPanel; //Benodigde panelen voor de pop up
	private Container cp;
	private JLabel label1,idlabel ,label3;
	private JComboBox cID;
	private JLabel idField;
	private JButton opslaan,annuleren;
	private String omschrijving;
	private JTextArea omschrijvingveld;
	private int afspraakID;
	
	/**
	 * 
	 * 3 verschillende constructors
	 * Er is 1 constructor voor elke pop up
	 * dus een constructor voor toevoegen,wijzigen en verwijderen
	 * de constructor weet aan de hand van de parameters of hij moet worden uitgevoerd
	 * 
	 */
	
	public RapportagePopup(AfspraakControl eventHandler) {
		this.eventHandler = eventHandler;
		setUp();
		setSize(500,300);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		setVisible(true);
	}
	
	public RapportagePopup(int afspraakID, String omschrijving, AfspraakControl eventHandler) {
		this.omschrijving = omschrijving;
		this.afspraakID = afspraakID;
		this.eventHandler = eventHandler;
		setUp();
		setSize(500,300);
		setWijzigen();
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		setVisible(true);
	}
	

	public RapportagePopup(int afspraakID, AfspraakControl eventHandler) {
		this.afspraakID = afspraakID;
		this.eventHandler = eventHandler;
		setUpVerwijderen();
		setSize(400,100);
		setResizable(false);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		setVisible(true);
	}
	
	public RapportagePopup(String omschrijving){
		this.omschrijving = omschrijving;
		showOmschrijving();
		setSize(500,300);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setVisible(true);
	}
	
	/**
	 * setUp van de popup voor het toevoegen van een rapportage
	 */
	public void setUp() {
		setTitle("Rapportage Toevoegen");
		cp = this.getContentPane();
		cp.setLayout(new BorderLayout());
		
		centerPanel = new JPanel();
		southPanel = new JPanel();
		northPanel = new JPanel();
		
		// Northpanel setup
		
		northPanel.setLayout(new GridLayout(1,2));
		label1 = new JLabel("Afspraak ID:");
		cID = new JComboBox();
		ArrayList<Integer> ids = eventHandler.getID();
		for(Integer id:ids) {
		cID.addItem(id);
		}
		northPanel.add(label1);
		northPanel.add(cID);
		
		//Centerpanel Setup

		centerPanel.setLayout(new BorderLayout());
		label3 = new JLabel("Omschrijving:");
		omschrijvingveld = new JTextArea(100,100);
		JScrollPane scroll = new JScrollPane(omschrijvingveld);
		
		centerPanel.add(label3, BorderLayout.NORTH);
		centerPanel.add(scroll, BorderLayout.CENTER);
		
		//Southpanel Setup
		
		southPanel.setLayout(new GridLayout(1,2));
		opslaan = new JButton("Opslaan");
		opslaan.addActionListener(eventHandler);
		
		annuleren = new JButton("Annuleren");
		annuleren.addActionListener(eventHandler);

		southPanel.add(opslaan);
		southPanel.add(annuleren);
		
		cp.add(centerPanel, BorderLayout.CENTER);	
		cp.add(northPanel, BorderLayout.NORTH);
		cp.add(southPanel, BorderLayout.SOUTH);
	}
	
	/**
	 * setup van de popup voor het wijzigen van de rapportage
	 */
	public void setWijzigen() {
		omschrijvingveld.setText(omschrijving);
		cID.setVisible(false);
		idField = new JLabel();
		idField.setText("" + afspraakID);
		northPanel.add(idField);
		opslaan.setText("Wijziging Opslaan");
	}
	
	/**
	 * setup van de popup voor het verwijderen van de rapportage
	 */
	public void setUpVerwijderen() {
		setTitle("Bevestiging");
		cp = this.getContentPane();
		cp.setLayout(new BorderLayout());
		
		centerPanel = new JPanel();
		southPanel = new JPanel();
		
		//Centerpanel setup
		
		label1 = new JLabel("Weet u zeker dat u de rapportage met ID: " + afspraakID + " wilt verwijderen?");
		centerPanel.add(label1);
		
		//Soutpanel setup
		
		southPanel.setLayout(new GridLayout(1,2));
		opslaan = new JButton("Bevestigen");
		opslaan.addActionListener(eventHandler);
		
		annuleren = new JButton("Annuleren");
		annuleren.addActionListener(eventHandler);

		southPanel.add(opslaan);
		southPanel.add(annuleren);
		
		cp.add(centerPanel, BorderLayout.CENTER);	
		cp.add(southPanel, BorderLayout.SOUTH);
	}
	
	/**
	 * Methode om het omschrijvingsveld op te bouwen
	 */
	public void showOmschrijving(){
		setTitle("Weergave..");
		cp = this.getContentPane();
		omschrijvingveld = new JTextArea(500,300);
		omschrijvingveld.setEditable(false);
		omschrijvingveld.setText(omschrijving);
		JScrollPane scroll = new JScrollPane(omschrijvingveld);
		cp.add(scroll);
	}
	
	/**
	 * Getter om de ingevulde of gewijzigde omschrijving
	 * uit het tekstvak te halen
	 */
	public String getOmschrijving(){
		return omschrijvingveld.getText();
	}
	
	/**
	 * Getter om het geselecteerde ID te krijgen
	 * uit de combobox. Deze wordt getimecast in een int
	 * en zo kan het overzicht bij het ID komen
	 * 
	 */
	public int getId(){
		try{
			return (Integer) cID.getSelectedItem();
		}catch(Exception e){
			return 0;
		}
		 
	}

}
